<?php
namespace SwoStar\Rpc;

class Proxy
{
    // 用于存储源 -- 服务源地址
    protected $services;

    public function __construct($services = null)
    {
        $this->services = $services;
    }

    /**
     * 获取配置信息
     * @param string $sname
     * @return mixed
     */
    public function getService($sname = '')
    {
        $services = $this->services($sname);

        return $services[\array_rand($services, 1)];
    }

    /**
     * 获取服务信息
     * @param string $sname
     * @return array|mixed|null
     */
    public function services($sname = '')
    {
        //如果为空则获取配置文件的配置信息
        if (empty($this->services)) {
            return app('config')->get('service.'.$sname);
        }

        //这里是数组，则表示是获取配置文件中的配置信息
        if (is_array($this->services)) {
            return $this->services;
        }

        //如果调用的是consul，则为对象，则获取对象的数据
        if ($this->services instanceof \Closure) {
            return ($this->services)($sname);
        }

    }
}
